Modelo Entidad-Relación (E-R)
El Modelo Entidad-Relación es el punto de partida en el diseño de cualquier base de datos moderna. Antes de crear tablas o escribir SQL, el modelo E-R permite representar visualmente cómo se organiza la información.
Su objetivo es traducir el mundo real al lenguaje de los datos: clientes, productos, pedidos, alumnos o canciones se convierten en entidades conectadas mediante relaciones.
¿Qué representa un modelo E-R?
- Entidades: objetos o conceptos del sistema.
- Atributos: características de cada entidad.
- Relaciones: vínculos entre entidades.
- Claves: identificadores únicos.
En una academia: Alumno → entidad
nombre, email, edad → atributos
id_alumno → clave primaria
Ejemplo SQL derivado del modelo E-R
CREATE TABLE Alumno (
id_alumno INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100),
edad INT
);
El modelo E-R es conceptual. Todavía no define cómo se almacenan físicamente los datos.
“El modelo E-R solo sirve para bases de datos grandes.” ❌ Falso. Incluso aplicaciones pequeñas necesitan diseño conceptual.
Entidades, atributos y claves
Entidades
Una entidad representa un objeto del mundo real que queremos almacenar en la base de datos.
- Cliente
- Producto
- Pedido
- Empleado
Atributos
Son las propiedades que describen a una entidad.
| Entidad | Atributos |
|---|---|
| Cliente | nombre, email, teléfono |
| Producto | precio, stock, categoría |
Tipos de atributos
- Descriptivos: nombre, edad, dirección.
- Identificadores: id_cliente, id_producto.
CREATE TABLE Producto (
id_producto INT PRIMARY KEY,
nombre VARCHAR(100),
precio DECIMAL(10,2),
stock INT
);
Toda entidad debe tener una clave primaria única.
Claves primarias, alternas y foráneas
Clave primaria (Primary Key)
Identifica de forma única cada registro.
id_cliente INT PRIMARY KEY
Clave alterna
Puede identificar registros, aunque no es la principal.
- DNI
- Número de pasaporte
Clave foránea (Foreign Key)
Conecta entidades distintas.
CREATE TABLE Pedido (
id_pedido INT PRIMARY KEY,
fecha DATE,
id_cliente INT,
FOREIGN KEY (id_cliente)
REFERENCES Cliente(id_cliente)
);
| Tipo de clave | Función |
|---|---|
| Primaria | Identifica registros |
| Alterna | Identificador secundario |
| Foránea | Relaciona tablas |
Beneficios del modelo E-R
El modelo E-R permite detectar errores antes de implementar la base de datos.
Ventajas principales
- Evita redundancias.
- Mejora la integridad de datos.
- Facilita mantenimiento.
- Permite escalabilidad.
- Ayuda al trabajo en equipo.
Impacto profesional
Analistas, desarrolladores y administradores utilizan diagramas E-R para coordinar diseño y lógica de negocio.
Relaciones
Las relaciones describen cómo interactúan las entidades.
Ejemplos reales
- Cliente realiza pedidos.
- Alumno se matricula en cursos.
- Empleado supervisa empleados.
Relaciones en SQL
CREATE TABLE Pedido (
id_pedido INT PRIMARY KEY,
id_cliente INT,
FOREIGN KEY (id_cliente)
REFERENCES Cliente(id_cliente)
);
Cardinalidades
1:1 (Uno a Uno)
Una persona tiene un único pasaporte.
1:N (Uno a Muchos)
Un cliente puede tener muchos pedidos.
N:M (Muchos a Muchos)
Muchos alumnos pueden matricularse en muchos cursos.
Tabla intermedia
CREATE TABLE Matricula (
id_alumno INT,
id_curso INT,
fecha DATE,
PRIMARY KEY(id_alumno,id_curso)
);
| Cardinalidad | Ejemplo |
|---|---|
| 1:1 | Persona → Pasaporte |
| 1:N | Cliente → Pedido |
| N:M | Alumno ↔ Curso |
Jerarquías: generalización y especialización
Generalización
Agrupa entidades específicas en una más general.
Especialización
Crea subtipos desde una entidad general.
Ventajas
- Evita duplicidad.
- Facilita mantenimiento.
- Permite herencia de atributos.
CREATE TABLE Empleado (
id_empleado INT PRIMARY KEY,
nombre VARCHAR(100),
salario DECIMAL(10,2)
);
CREATE TABLE Programador (
id_empleado INT PRIMARY KEY,
lenguaje VARCHAR(50),
FOREIGN KEY(id_empleado)
REFERENCES Empleado(id_empleado)
);
Caso de estudio: Spotify
Spotify gestiona millones de canciones, usuarios y listas de reproducción.
Entidades principales
- Usuario
- Canción
- Lista de reproducción
Relación importante
Lista ↔ Canción es una relación N:M.
CREATE TABLE ListaCancion (
id_lista INT,
id_cancion INT,
PRIMARY KEY(id_lista,id_cancion)
);
Caso de estudio: Amazon
Amazon necesita gestionar pedidos, productos, empleados y clientes a escala global.
Relaciones principales
- Cliente → Pedido (1:N)
- Pedido ↔ Producto (N:M)
- Empleado → Envío (1:N)
Tabla intermedia
CREATE TABLE OrderItems (
order_id INT,
product_id INT,
quantity INT,
unit_price DECIMAL(10,2)
);
Biblioteca digital y Workbench
Una red de bibliotecas públicas desea centralizar préstamos y usuarios mediante un modelo E-R.
Entidades
| Entidad | Clave primaria |
|---|---|
| Libro | id_libro |
| Usuario | id_usuario |
| Préstamo | id_prestamo |
Modelo SQL
CREATE TABLE Prestamo (
id_prestamo INT PRIMARY KEY,
fecha_prestamo DATE,
fecha_devolucion DATE,
id_usuario INT,
id_libro INT,
FOREIGN KEY(id_usuario)
REFERENCES Usuario(id_usuario),
FOREIGN KEY(id_libro)
REFERENCES Libro(id_libro)
);
Flujo en Workbench
- Crear modelo EER
- Definir entidades
- Asignar claves
- Crear relaciones
- Validar modelo
- Forward Engineer